package com.example.javaui.slice;

import com.example.javaui.ResourceTable;
import com.example.javaui.Utils;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.*;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

public class ListContainerAbilitySlice extends AbilitySlice {
    // ListContainer对象
    private ListContainer mListContainer;
    // 列表数据（1-1000整型值）
    private List<Integer> mNumbers;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_slice_list_container);

        // 初始化列表数据对象
        mNumbers = new ArrayList<>();
        for (int i = 0; i < 1000; i++) {
            mNumbers.add(i + 1);
        }

        // 获取ListContainer对象
        mListContainer = (ListContainer) findComponentById(ResourceTable.Id_list_container);
        // 为ListContainer对象设置RecycleItemProvider
        mListContainer.setItemProvider(new RecycleItemProvider() {

            @Override
            public int getCount() {
                // 列表项数
                return mNumbers.size();
            }

            @Override
            public Object getItem(int i) {
                // 当前列表项的数据
                return mNumbers.get(i);
            }

            @Override
            public long getItemId(int i) {
                // 当前列表项ID
                return i;
            }

            @Override
            public Component getComponent(int i, Component component, ComponentContainer componentContainer) {
                // 列表项用户界面 （如果可以复用之前的界面，则直接复用）
                DirectionalLayout layout = (DirectionalLayout) component;
                if (layout == null) {
                    // 如果之前的界面为空，则创建新的列表项用户界面
                    layout = (DirectionalLayout) LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_recycle_item, null, false);
                }
                // 获取列表项中的文本组件
                Text text = (Text) layout.findComponentById(ResourceTable.Id_item_text);
                // 设置列表项数据
                text.setText("当前数据:" + getItem(i).toString());
                // 返回该列表项用户界面
                return layout;
            }
        });
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}
